// @Author karl
// @Date 2025/9/20 22:31:00
// @Desc 请求工具包
package utils

import (
	"crypto/rand"
	"encoding/hex"
	"fmt"
	"g_group-buy-market/pkg/globalService"
	"go.uber.org/zap"
	"sync"
	"time"
)

var (
	randMutex sync.Mutex // 随机数锁
)

func GenerateLogId() string {
	now := time.Now()

	// 时间部分：秒级时间戳（10位）
	timestamp := now.Unix()

	// 随机部分：8字节随机数（16进制16字符）
	randBytes := make([]byte, 8)
	randMutex.Lock() // 防止并发问题
	_, err := rand.Read(randBytes)
	if err != nil {
		globalService.ZapLogClient.Error("生成随机数失败: ", zap.Error(err))
		return now.Format(time.DateTime)
	}
	randMutex.Unlock()

	return fmt.Sprintf("%d%s", timestamp, hex.EncodeToString(randBytes))
}
